// 手写一个new
function myNew(fn, ...args) {
  // 创建一个空对象
  let obj = {}
  // 使空对象的隐式原型指向原函数的显式原型
  obj.__proto__ = fn.prototype
  // this指向obj
  let result = fn.apply(obj, args)
  // 返回
  return result instanceof Object ? result : obj
}

function a() {
  console.log(333)
  this.name = 'jack'
  return {age: 2}
}

let h = myNew(a)
console.log(h)
// console.log(h.name)
